package com.ggboy.sc.pl.project.es.web.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.baomidou.mybatisplus.toolkit.StringUtils;
import com.ggboy.sc.pl.project.es.model.DocBean;
import com.ggboy.sc.pl.project.es.model.DocEntity;
import com.ggboy.sc.pl.project.es.model.TestPoetry;
import com.ggboy.sc.pl.project.es.service.DocService;
import com.ggboy.sc.pl.project.es.service.TestService;

@Controller
@RequestMapping({"/es"})
@SuppressWarnings({ "rawtypes", "unchecked" })
public class TestController {
    
    @Autowired
    private TestService testService;

    @Autowired
    private DocService docService;
    

    @RequestMapping(value = "/esPage")
    public Object esPage() {
    	return "/es/searchAppWords";
    }
    

    /**
    * @Title: list
    * @Description: TODO(oracle 数据测试接口)
    * @author gangyu2
    * @date 2018年8月6日下午5:10:13
     */
    @RequestMapping(value = "/test")
    @ResponseBody
    public Object list() throws Exception {
    	return testService.list();
    }
    

    /**
    * @Title: bigData
    * @Description: TODO(自定义数据写入)
    * @param size
    * @author gangyu2
    * @date 2018年8月6日下午5:09:57
     */
    @RequestMapping(value = "/bigData")
    @ResponseBody
    public Map<String,Object> bigData(Integer size){
        return testService.bigData(size);
    }
    
    /**
    * @Title: dataPage
    * @Description: TODO(测试数据)
    * @param page
    * @param pageSize
    * @author gangyu2
    * @date 2018年8月6日下午5:09:33
     */
    @RequestMapping(value = "/dataPage")
    @ResponseBody
    public Map<String,Object> dataPage(Integer page,Integer pageSize){
    	return testService.dataPage(page,pageSize);
    }

    /**
    * @Title: poetry
    * @Description: TODO(诗歌添加)
    * @author gangyu2
    * @date 2018年8月6日下午5:09:10
     */
    @RequestMapping(value = "/poetry")
    @ResponseBody
    public Map<String, Object> poetry(){
    	return testService.poetry();
    }
    
    /**
    * @Title: singleQuery
    * @Description: TODO(单词查询)
    * @param word
    * @param page
    * @param pageSize
    * @author gangyu2
    * @date 2018年8月6日下午5:10:39
     */
    @RequestMapping(value = "/singleQuery")
    @ResponseBody
    public Map<String, Object> singleQuery(String word,Integer page,Integer pageSize){
    	page=page==null?0:page;
    	pageSize=pageSize==null?10:pageSize;
    	page=page*pageSize;
    	//排序只能是int字段
    	List<Order> orderArr = new ArrayList<Order>();
    	Order order = Order.asc("userId");
    	orderArr.add(order);
    	Order order1 = Order.asc("weight");
    	orderArr.add(order1);
    	Pageable pageable = PageRequest.of(page, pageSize,Sort.by(orderArr/*Sort.Direction.ASC, new String[] {"userId"}*/));
    	return testService.singleQuery(word,pageable);
    }

    /**
    * @Title: queryHighlight
    * @Description: TODO(查询高亮)
    * @param word
    * @param page
    * @param pageSize
    * @param index
    * @param type
    * @author gangyu2
     * @throws ClassNotFoundException 
    * @date 2018年8月6日下午5:11:20
     */
    @RequestMapping(value = "/queryHighlight")
    @ResponseBody
    public Map<String,Object> queryHighlight(String word,Integer page,Integer pageSize,String index,String type,String fileName) throws ClassNotFoundException{
    	page=page==null?0:page-1;
    	pageSize=pageSize==null?10:pageSize;
    	page=page*pageSize;
    	//排序只能是int字段
    	String file[]=null;
    	if(StringUtils.isNotEmpty(fileName)) {
    		file=fileName.split(",");
    	}
    	Pageable pageable = PageRequest.of(page, pageSize,Sort.by(Sort.Direction.ASC, new String[] {"userId"}));
    	return testService.queryHighlight(word, pageable, index, type,file);
    }
    
    /**
    * @Title: zcfg
    * @Description: TODO(导入政策法规)
    * @author gangyu2
    * @date 2018年8月6日下午5:12:05
     */
    @RequestMapping(value = "/zcfg")
    @ResponseBody
    public Map<String, Object> zcfg(DocBean docBean){
    	return testService.zcfg(docBean);
    }
    
    
    /**
    * @Title: del
    * @Description: TODO(删除数据)
    * @param 
    * @author gangyu2
    * @date 2018年8月15日上午11:21:03
     */
	@RequestMapping(value = "/del")
    @ResponseBody
    public Map<String,Object> del(String id,String index,String type){
    	Class clazz=null;
    	if(type.equals("poetry")) {
    		clazz=TestPoetry.class;
    	}else if(type.equals("doc")) {
    		clazz=DocBean.class;
    	}
    	return testService.del(id,clazz);
    }

    /**
    * @Title: update
    * @Description: TODO(修改数据)
    * @param 
    * @author gangyu2
    * @date 2018年8月15日上午11:21:24
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Map<String,Object> update(){
    	return null;
    }
    
    /**
    * @Title: addDoc
    * @Description: TODO(导入文档数据)
    * @param DocEntity
    * @author gangyu2
    * @date 2018年8月23日上午10:12:41
     */
    @RequestMapping(value = "/addDoc")
    @ResponseBody
    public Map<String, Object> addDoc(DocEntity docEntity){
   
    	return docService.addDoc(initNewsDocEntity());
    }
    
    /**
    * @Title: updateDoc
    * @Description: TODO(并发更新)
    * @author gangyu2
    * @date 2018年8月24日下午5:58:36
     */
    @RequestMapping(value = "/updateDoc")
    @ResponseBody
    public Map<String,Object> updateDoc(){
    	Map<String,Object> data=new HashMap<String,Object>();
    	data.put("id", "9999");
    	data.put("zcfgTitle", "zcfgTitle:政策法规");
    	data.put("zcfgContent", "zcfgContent:政策修改了:"+System.currentTimeMillis());
    	data.put("newsTitle", "newsTitle:新形势下宣传思想工作怎么做");
    	data.put("newsContent", "newsContent被修改了:"+System.currentTimeMillis());
    	data.put("outTime", "outTime修改了:"+System.currentTimeMillis());
    	data=docService.update("iflytek", "doc",data);
    	return data;
    }

    /**
    * @Title: getVersion
    * @Description: TODO(获取数据版本号)
    * @author gangyu2
    * @date 2018年8月24日下午2:35:27
     */
    @RequestMapping(value = "/getVersionById")
    @ResponseBody
    public Map<String,Object> getVersionById(){
    	Map<String,Object> map=new HashMap<String,Object>();
    	Long version=docService.get("iflytek","doc","9999").getVersion();
    	
    	map=new HashMap<String,Object>();
    	map.put("msg", "获取数据版本号");
    	map.put("data", "version:["+version+"]");
    	return map;
    }

    /**
    * @Title: rangeSearch
    * @Description: TODO(范围搜索)
    * @author gangyu2
    * @date 2018年8月27日下午4:57:17
     */
    @RequestMapping(value = "/rangeSearch")
    @ResponseBody
    public Map<String,Object> rangeSearch(){
    	Map<String,Object> data=new HashMap<String,Object>();

		data.put("bginTime", "1535017456981");
		data.put("endTime", "1535105024739");
		data.put("word", "中国");
		data.put("fileName", "zcfgTitle,zcfgContent,newsTitle,newsContent,title,content".split(","));
		
    	return docService.rangeSearch("iflytek", "doc", data);
    }
    
    public DocEntity initNewsDocEntity() {
    	DocEntity docEntity = new DocEntity();
     	docEntity.setNewsTitle("新形势下宣传思想工作怎么做？习近平提出15字使命任务");
    	docEntity.setId(9999);
    	docEntity.setNewsContent("　　全国宣传思想工作会议21日至22日在北京召开。中共中央总书记、国家主席、中央军委主席习近平出席会议并发表重要讲话。在讲话中，习近平提出新形势下宣传思想工作使命任务：举旗帜、聚民心、育新人、兴文化、展形象。\r\n" + 
    			"\r\n" + 
    			"　　\r\n" + 
    			"\r\n" + 
    			"　　习近平要求，在基础性、战略性工作上下功夫，在关键处、要害处下功夫，在工作质量和水平上下功夫，推动宣传思想工作不断强起来，促进全体人民在理想信念、价值理念、道德观念 上紧紧团结在一起，为服务党和国家事业全局作出更大贡献。\r\n" + 
    			"\r\n" + 
    			"　　举旗帜\r\n" + 
    			"\r\n" + 
    			"　　举旗帜 ，就是要高举马克思主义、中国特色社会主义的旗帜，坚持不懈用新时代中国特色社会主义思想武装全党、教育人民、推动工作，在学懂弄通做实上下功夫，推动当代中国马克思主义、21世纪马克思主义深入人心、落地生根。\r\n" + 
    			"\r\n" + 
    			"　　习近平指出，要做好做强马克思主义宣传教育工作，特别是要在学懂弄通做实新时代中国特色社会主义思想上下功夫。要把坚定“四个自信”作为建设社会主义意识形态的关键，坚持马克思主义在我国哲学社会科学领域的指导地位，建设具有中国特色、中国风格、中国气派的哲学社会科学 。\r\n" + 
    			"\r\n" + 
    			"　　聚民心\r\n" + 
    			"\r\n" + 
    			"　　聚民心 ，就是要牢牢把握正确舆论导向，唱响主旋律，壮大正能量，做大做强主流思想舆论，把全党全国人民士气鼓舞起来、精神振奋起来，朝着党中央确定的宏伟目标团结一心向前进。\r\n" + 
    			"\r\n" + 
    			"　　习近平强调，要提高新闻舆论传播力、引导力、影响力、公信力 ，巩固壮大主流思想舆论。要加强传播手段和话语方式创新，让党的创新理论“飞入寻常百姓家”。他同时强调，要扎实抓好县级融媒体中心建设 ，更好引导群众、服务群众。要旗帜鲜明坚持真理，立场坚定批驳谬误。\r\n" + 
    			"\r\n" + 
    			"　　\r\n" + 
    			"\r\n" + 
    			"　　育新人\r\n" + 
    			"\r\n" + 
    			"　　育新人 ，就是要坚持立德树人、以文化人，建设社会主义精神文明、培育和践行社会主义核心价值观，提高人民思想觉悟、道德水准、文明素养，培养能够担当民族复兴大任的时代新人。\r\n" + 
    			"\r\n" + 
    			"　　习近平强调，宣传思想工作是做人的工作的，要把培养担当民族复兴大任的时代新人作为重要职责。\r\n" + 
    			"\r\n" + 
    			"　　重中之重是要以坚定的理想信念筑牢精神之基，坚定对马克思主义的信仰，对社会主义和共产主义的信念，对中国特色社会主义道路、理论、制度、文化的自信。\r\n" + 
    			"\r\n" + 
    			"　　要强化教育引导、实践养成、制度保障，把社会主义核心价值观融入社会发展各方面，引导全体人民自觉践行。\r\n" + 
    			"\r\n" + 
    			"　　要抓住青少年价值观形成和确定的关键时期，引导青少年扣好人生第一粒扣子。\r\n" + 
    			"\r\n" + 
    			"　　要广泛开展先进模范学习宣传活动，营造崇尚英雄、学习英雄、捍卫英雄、关爱英雄的浓厚氛围。\r\n" + 
    			"\r\n" + 
    			"　　要大力弘扬时代新风，加强思想道德建设，深入实施公民道德建设工程，加强和改进思想政治工作，推进新时代文明实践中心建设，不断提升人民思想觉悟、道德水准、文明素养和全社会文明程度。\r\n" + 
    			"\r\n" + 
    			"　　要弘扬新风正气，推进移风易俗，培育文明乡风、良好家风、淳朴民风，焕发乡村文明新气象。\r\n" + 
    			"\r\n" + 
    			"　　兴文化\r\n" + 
    			"\r\n" + 
    			"　　兴文化 ，就是要坚持中国特色社会主义文化发展道路，推动中华优秀传统文化创造性转化、创新性发展，继承革命文化，发展社会主义先进文化，激发全民族文化创新创造活力，建设社会主义文化强国。\r\n" + 
    			"\r\n" + 
    			"　　这方面，习近平对文艺工作提出要求：　　\r\n" + 
    			"\r\n" + 
    			"　　要引导广大文化文艺工作者深入生活、扎根人民，把提高质量作为文艺作品的生命线，用心用情用功抒写伟大时代，不断推出讴歌党、讴歌祖国、讴歌人民、讴歌英雄的精品力作，书写中华民族新史诗 。\r\n" + 
    			"\r\n" + 
    			"　　要坚持把社会效益放在首位，引导文艺工作者树立正确的历史观、民族观、国家观、文化观，自觉讲品位、讲格调、讲责任 ，自觉遵守国家法律法规，加强道德品质修养，坚决抵制低俗庸俗媚俗，用健康向上的文艺作品和做人处事陶冶情操、启迪心智、引领风尚。\r\n" + 
    			"\r\n" + 
    			"　　要推出更多健康优质的网络文艺作品。\r\n" + 
    			"\r\n" + 
    			"　　在公共文化和文化产业方面，习近平强调：\r\n" + 
    			"\r\n" + 
    			"　　要推动公共文化服务标准化、均等化，坚持政府主导、社会参与、重心下移、共建共享，完善公共文化服务体系，提高基本公共文化服务的覆盖面和适用性。\r\n" + 
    			"\r\n" + 
    			"　　要推动文化产业高质量发展，健全现代文化产业体系和市场体系，推动各类文化市场主体发展壮大，培育新型文化业态和文化消费模式，以高质量文化供给增强人们的文化获得感、幸福感。\r\n" + 
    			"\r\n" + 
    			"　　要坚定不移将文化体制改革引向深入，不断激发文化创新创造活力。\r\n" + 
    			"\r\n" + 
    			"　　展形象\r\n" + 
    			"\r\n" + 
    			"　　展形象，就是要推进国际传播能力建设，讲好中国故事、传播好中国声音，向世界展现真实、立体、全面的中国，提高国家文化软实力和中华文化影响力。\r\n" + 
    			"\r\n" + 
    			"　　要讲好的中国故事到底是哪些故事？对此，习近平明确表示，要不断提升中华文化影响力，把握大势、区分对象、精准施策，主动宣介新时代中国特色社会主义思想 ，主动讲好中国共产党治国理政的故事、中国人民奋斗圆梦的故事、中国坚持和平发展合作共赢的故事 ，让世界更好了解中国。\r\n" + 
    			"\r\n" + 
    			"　　习近平还表示，中华优秀传统文化是中华民族的文化根脉，其蕴含的思想观念、人文精神、道德规范，不仅是我们中国人思想和精神的内核，对解决人类问题也有重要价值。要把优秀传统文化的精神标识提炼出来、展示出来，把优秀传统文化中具有当代价值、世界意义的文化精髓提炼出来、展示出来 。\r\n" + 
    			"\r\n" + 
    			"　　习近平强调，要完善国际传播工作格局，创新宣传理念、创新运行机制，汇聚更多资源力量。");
    	docEntity.setCreateTime(new Date());
		return docEntity;
    }
}
